home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / cmln0386.arc / CROSSTH2.LTG < prev    next >
Text File  |  1986-03-03  |  1KB  |  40 lines

  1.  
  2.  
  3.                            Listing 2.  
  4. Simulating records containing multi-type data, using QuickBASIC.
  5.  
  6.  
  7. ' Function to Select Index of an array
  8. DEF SI(MAP$,V$) = VAL(MID$(MAP$,INSTR(MAP$,V$)-3,2))
  9.  
  10. ' Funtion to select type of data
  11. DEF DATATYPE$(MAP$,V$) = VAL(MID$(MAP$,INSTR(MAP$,V$)-1,1))
  12.  
  13. SUB INITIALIZE(MAP$, REC$(), ATOM$, VALENCE%, ATOMIC.WEIGHT)
  14.  
  15. ' DATA TYPE CODES: S = STRING, I = INTEGER, R = REAL, L = DOUBLE REAL
  16. MAP$ = "01S<ELEMENT>02I<VALENCE>03R<ATOMIC.WEIGHT>04R<EQUIVALENT.WEIGHT>"
  17. REC$(SI(MAP$,"<ELEMENT>")) = ATOM$
  18. REC$(SI(MAP$,"<VALENCE>")) = MKI$(VALENCE%)
  19. REC$(SI(MAP$,"<ATOMIC.WEIGHT>")) = MKS$(ATOMIC.WEIGHT)
  20.   
  21. END SUB
  22.  
  23.  
  24. SUB CALC(MAP$,REC$())
  25. ' Subroutine to calculate equivalent weight of a chemical atom
  26.  
  27. ' Map data to local variables
  28. ATOM$ = REC$(SI(MAP$,"<ELEMENT>")) 
  29. A$ = REC$(SI(MAP$,"<VALENCE>")) : VALENCE = CVI$(A$)
  30. A$ = REC$(SI(MAP$,"<ATOMIC.WEIGHT>")) : AW = CVS$(A$)
  31.  
  32. ' Calculate sought item
  33. EQUIVALENT.WEIGHT = AW / VALENCEè
  34. PRINT ATOM$;"has an equivalent weight = ";EQUIVALENT.WEIGHT 
  35.  
  36. ' Assign result to proper string
  37. REC$(SI(MAP$,"<EQUIVALENT.WEIGHT>")) = MKS$(EQUIVALENT.WEIGHT)
  38.  
  39. END SUB
  40.